A communication device, for example, a mobile device such as a laptop or tablet or a stationary device such as a desktop or a gaming console, can send one or more packets (also referred to as datagrams) on an Internet Protocol (IP) network using a connectionless transport protocol, such as User Datagram Protocol (UDP). UDP does not require that a pre-established connection exist between communication devices and/or that the communication devices maintain a session, making UDP a relatively fast transport protocol. Some application layer protocols, for example Session Initiation Protocol (SIP), and/or applications, such as electronic gaming application, are designed to use UDP because of the transmission speed associated with UDP. However, UDP datagrams are not transmitted in any inherent order as all packets are independent of each other. If an application or protocol using UDP requires that datagrams be sent and received in a specific order, the ordering has to be managed by the transmitting and/or receiving applications/protocols.
The size of a UDP datagram is limited by a Maximum Transmission Unit (MTU), i.e., the largest size of a datagram which may be transferred using a specific data link connection. For Ethernet, the prevalent Path MTU (PTMU) is currently 1500 bytes. If the size of the datagram is larger than the PMTU, before the datagram is transmitted, the transmitting communication device has to fragment the large datagram into two or more datagram fragments, each of which is smaller than the PTMU. The receiving communication device has to reorder and reassemble these datagram fragments to recover the transmitted datagram. During delivery, one or more of the fragmented datagrams may be lost because of, for example, firewall devices between the communicating devices which may increase the likelihood that fragmented packets are dropped or blocked. Although UDP provides checksums for data integrity and port numbers for addressing different functions at the source and/or destination applications, UDP provides no guarantee of delivery, is not concerned with the order in which the datagrams are delivered, and does not provide for duplicate protection. Thus, if any of these fragments are not received by the receiving device, the transmitting device needs to retransmit the whole datagram. However, certain applications/protocols, for example SIP, do not support fragmentation, reassembly, retransmission, and reordering of fragmented datagrams.
To secure network traffic sent from one communication device to another, and prevent eavesdropping, tampering, or message forgery, the network traffic being sent may be secured by a security protocol, such as a Datagram Transport Layer Security (DTLS) protocol or a Transport Layer Security (TLS) protocol. DTLS is used to provide privacy for UDP datagrams. DTLS also does not guarantee message delivery and does not provide a message fragmentation, retransmission, and reassembly mechanism. Therefore, in order for a transmitting application on an IP network to send a datagram that is larger than the size of the PTMU, the transmitting application has to implement its own message fragmentation, reordering, and reassembly mechanisms, or use a transport protocol (for example, Transmission Control Protocol (TCP) or Stream Control Transmission Protocol (SCTP)) which supports message fragmentation. However, certain computing platforms do not support SCTP and for performance reason, some applications cannot use TCP.
TCP is connection oriented protocol, wherein a connection has to be established between two communication devices before data can be transmitted between the communication devices. Once the connection is established, bidirectional data may be sent between the communication devices. TCP is used in case of non-time critical applications and arranges data packets in the order specified by the transmitting communication device. With TCP, there is an absolute guarantee that the data is transmitted intact and that the data arrives in the same order in which it was sent. TLS may be used to provide security for the TCP packet.
Because TCP transmission is slower than UDP transmission, for performance reasons, changing from UDP/DTLS to TCP/TLS may not be desirable. However, there are times when a UDP message size that is larger than the PTMU needs to be delivered and the transmitting application or protocol cannot fragment the message. For example, during a SIP registration, the SIP message might include a Security Assertion Markup Language (SAML) token. The inclusion of the token inside SIP message may increase the size of the message such that the SIP message may be larger than the PMTU. Because SIP with UDP does not handle fragmentation, the transmitting application must use TCP/TLS to handle this specific case. Although TCP provides reliable, ordered delivery of streams of data, TCP may not be preferred for an application that may need to intermittently transmit a datagram that is larger than the PTMU, but that prefers reduced latency over reliability.
Accordingly, there is a need for a method and apparatus for transmitting a UDP datagram that is larger than a defined size, without switching to another transport or security protocol.
Skilled artisans will appreciate that elements in the figures are illustrated for simplicity and clarity and have not necessarily been drawn to scale. For example, the dimensions of some of the elements in the figures may be exaggerated relative to other elements to help to improve understanding of embodiments of the present invention.
The apparatus and method components have been represented where appropriate by conventional symbols in the drawings, showing only those specific details that are pertinent to understanding the embodiments of the present invention so as not to obscure the disclosure with details that will be readily apparent to those of ordinary skill in the art having the benefit of the description herein.